<?php

/**
 * Description of boek_model
 *
 * @author Jehannes Stellingwerf
 */
class Boek_model extends CI_Model {
    public function __construct(){
        session_start();
    }
    
    public function addDeelnemer($deelnemer) {
        $deelnemers = $this->getAllDeelnemers();
        $deelnemers[] = $deelnemer;
        //CI session lijkt objecten absoluut niet leuk te vinden
//        $this->session->set_userdata('deelnemers', $deelnemers);
        $_SESSION['deelnemers'] = $deelnemers;
    }

    public function getAllDeelnemers() {   
        //CI session lijkt objecten absoluut niet leuk te vinden
//        var_dump($this->session->userdata('deelnemers'));
//        return $this->session->userdata('deelnemers');
        if(isset($_SESSION['deelnemers'])){
            return $_SESSION['deelnemers'];
        }
        return array();
    }

    //TODO:Apart planning_model maken?
    
    public function getAgeLimits($planningId) {
        $query = $this->db->query("Select min_leeftijd, max_leeftijd, datum_van FROM planning WHERE id = $planningId");
        return $query->row();
    }
    
    public function deelnemerIsUnique($deelnemer, $planningID){	
		$deelnemers = (isset($_SESSION['deelnemers'])?$_SESSION['deelnemers']:array());
		
		foreach($deelnemers AS $opgeslagenDeelnemer){
			if($deelnemer->getPaspoortnummer() === $opgeslagenDeelnemer->getPaspoortnummer()){
				//Deelnemer al aan deze reis toegevoegd
				return false;
			}
		}	

		$query = $this->db->query('SELECT COUNT(*) AS aantal FROM shoestring.deelnemer d
			INNER JOIN klant k ON (d.klant_id = k.id)
			INNER JOIN reservering r ON (d.reservering_id = r.id)
			INNER JOIN planning p ON (r.planning_id = p.id)

		WHERE k.paspoortnummer = '.$this->db->escape($deelnemer->getPaspoortnummer()).'
			AND (
				(SELECT datum_van FROM planning WHERE id = '.$this->db->escape($planningID).') BETWEEN p.datum_van AND p.datum_tot
				OR
				(SELECT datum_tot FROM planning WHERE id = '.$this->db->escape($planningID).') BETWEEN p.datum_van AND p.datum_tot
			)');
		
		return ($query->row()->aantal>0?false:true);
    }
    
    /**
     *
     * @param type $planningID
     * @return object - object met bedrag en korting
     */
    public function getPricing($planningID){
        $query = $this->db->query('SELECT bedrag 
                FROM planning 
                WHERE id = '. $this->db->escape($planningID));
        $priceObj = new stdClass();
        $priceObj->bedrag = $query->row()->bedrag;
//        $priceObj->bedrag = $priceObj->bedrag * $this->getAantalDeelnemers();
        $priceObj->korting = $this->getDiscount();
        return $priceObj;
    }
    
    public function aantalPlaatsVrij($planningID){
        $query = $this->db->query('SELECT p.aantal_maximum - COUNT(d.id) AS aantal 
            FROM planning p
                INNER JOIN reservering r ON (p.id = r.planning_id)
                INNER JOIN deelnemer d ON (r.id = d.reservering_id)
            WHERE p.id = '. $this->db->escape($planningID));
        
        return $query->row()->aantal;
    }
    
    /**
     * Geef aantal ingevoerde deelnemers op
     * @return int 
     */
    public function getAantalDeelnemers(){
        return (isset($_SESSION['deelnemers'])?count($_SESSION['deelnemers']):'0');
    }
    
    /**
     * Geeft korting terug voor aantal toegevoegde deelnemers
     * @return float 
     */
    private function getDiscount(){
        $query = $this->db->query('SELECT korting
            FROM groepskorting
            WHERE van <= '.$this->getAantalDeelnemers().' 
                AND tot >= '.$this->getAantalDeelnemers());
        if($query->row()){
            return $query->row()->korting;
        }
        return 0.0;
    }
}

?>
